package model

import (
	"My_Blog02/utils"
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"time"
)

var db *gorm.DB
var err error

func InitDb() {
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", utils.DbUser, utils.DbPassword, utils.DbHost, utils.DbPort, utils.DbName)
	db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		fmt.Println("数据库打开错误", err)
	}
	sqlDb, err := db.DB()
	if err != nil {
		fmt.Println("获取底层db错误", err)
		return
	}
	err = sqlDb.Ping()
	if err != nil {
		fmt.Println("数据库连接失败", err)
		return
	}
	sqlDb.SetMaxIdleConns(10)           //设置连接池中的最大空闲连接数
	sqlDb.SetMaxOpenConns(100)          //设置连接池中的最大打开连接数
	sqlDb.SetConnMaxLifetime(time.Hour) // 设置一个连接的最大存活时间
	sqlDb.SetConnMaxIdleTime(time.Hour) //设置一个连接的最大空闲时间
	err = db.AutoMigrate(&Article{}, &User{})
	if err != nil {
		fmt.Println("迁移失败", err)
		return
	}
}
